オーバークロックの方法
ところで私は「オーバークロック」という表現をしていますが、日本では「クロックアップ」の方が通りがいいようです。しかしこれはよくある和製英語というやつなので、一応正しい英語の「オーバークロック」という言葉を採用したいところです。しかし言い馴れた「クロックアップ」を多用すると思いますが許して下さい。
先にCPUのクロックは与えられるものだと説明しました。これをベースクロックといいマザーボード側で、水晶発振子を使って発生させます。CPUから見ると外部クロックと呼ばれます。また最近ではよくフロントサイドバス(FSB)クロックともよく呼ばれます(これに対しCPUのクロックをバックサイドバスクロックという)。これが今のマザーボードでは多くは100MHzです。一部には112MHzや133MHzなどオーバークロックもあります。以前までは66MHzが一般で、当時は75MHzとか83MHzなどがオーバークロックでした。これはCPU以外の多くのの部品を動かす重要な基本クロックです。
しかしCPUとしてはもっと速く動ける訳ですからこれに付き合う必要はなく、自らこれを倍増して動いています。実際450MHzのCPUはベース100MHzを4.5倍にしている訳です。これがベースが133MHzなら500MHzとなることは容易に理解できるでしょう。ただ倍率というのは、例えば4.2倍といった細かい倍率にはできません。せいぜい4.5倍といった0.5倍単位でしかサポートされないのが普通です。またベースクロックも前述の5種類くらいしか普通はありません。以下にパターンを表にしてみました。
66MHz | 75MHz | 83MHz | 100MHz | 112MHz | 133MHz | |
4倍 | 266MHz | 300MHz | 333MHz | 400MHz | 450MHz | 532MHz |
4.5倍 | 300MHz | 337MHz | 375MHz | 450MHz | 505MHz | 600MHz |
5倍 | 333MHz | 375MHz | 415MHz | 500MHz | 560MHz | 665MHz |
5.5倍 | 366MHz | 412MHz | 456MHz | 550MHz | 616MHz | 731MHz |
6倍 | 400MHz | 450MHz | 500MHz | 600MHz | 672MHz | 800MHz |
縦軸に倍率、横軸にベースクロックを配置しています。標準ベースクロックの66MHzと100MHzの欄には見覚えのある周波数が殆どなのが分かるでしょう。基本的には動作周波数から倍率とベースクロックが分かると思います。たとえば400MHzなら100MHzの4倍だなとか366MHzは66MHzの5.5倍だなとかですね。もっとも450MHzのように75MHzの6倍と100MHzの4.5倍と112MHzの4倍という複数のパターンが考えられるものもありますが、この場合業界標準の100MHzの4.5倍であると思います。
このようにベースクロックと倍率があり、その掛け算(積)でCPUの動作周波数が決まるので、いずれか又は双方を変更してオーバークロックしていくのだなということは、もうお分かりでしょう。ではそれぞれの方法のメリット、デメリットを探ってみましょう。
もしベースクロックを上げることができたらこれはなかなかいい方法です。と言うのは前述したようにこれは多くのパソコンの部品が動く基本クロックですから、これを上げればCPU以外の部品の性能も向上するからです。しかし巷でいわれるほど効果がある訳ではありません。実際ベースクロックを上げたことによって動作周波数が上昇する部品は限られており、更にパフォーマンスも向上する部品となると非常に限られているからです。ではいったいどの部品がどのくらいの効果で性能があがるのでしょうか。それを見る前にベースクロックを発生させるメカニズムと部品をみてみましょう。
まず基本クロックはオシレータという水晶発振子が14.318MHzという周波数を発振します。この周波数をうけてPLL(Phase Locked Loop)という部品(QPFのIC)が様々な周波数を作りだし、必要なところに供給します。ベースクロックというのもこのPLLが作り出す周波数の一つです。殆どのM/Bはベースクロックが可変ですが、PLLの作り出すすべての周波数が可変な訳ではありません。供給先には決して規定のもの以外の周波数を与えてはいけないものが結構あります。たとえばシステムクロックです。これは所謂時計ですから、その基準クロックを変えてしまったら、めちゃくちゃな時間をPCの時計が刻むことになります。またI/Oコントローラなども24MHzという決まったクロックでないと全く動作しないようです。ベースクロック以外は全て固定であると考えていいでしょう。ベースクロックはシステムバスクロックなどとも呼ばれますが、決してシステム全体のベースになっているわけではなく、多くの部品はベースクロックとは関係ないクロックで動作しています。
ベースクロックが可変であるといっても上記の6種類のうち通常は66MHzと100MHzだけで、それ以外をサポートしているマザーボードは決して多くはありません。しかし実際は隠しでサポートしている場合も多いようです。そのへんのことはWebのBBSが詳しいかもしれませんね。また改造もできます。基本的にはオシレータを変えればいいのですが、前述のようにこれを交換しただけではシステムクロックがめちゃくちゃになり、I/Oコントローラも動かなくなります。これらにはもとの周波数を与えなければならないので、どうしてもPLLにも手を入れる必要があり、このピン情報 が必要です。私のM/B(ASUSTekのP2L97)に搭載さていたPLLはICS社のものでしたが、同社のホームページ(http://www.icst.com/)にピン情報が公開されていました。このような情報が公開されていないとちょっと無理ですね。
改造に関してはこちらが非常によい報告をされているのでご覧ください。
ところでアップの対象となるベースクロックはすべてのパソコン部品に関係した周波数ではないと述べました。ではいったいこの周波数はどこに供給されるのでしょうか。実はこれが供給されるのはPCIバスとメモリバスとCPUバスの3個所だけです。結局ベースクロックのアップの効果が及ぶものはこの3つのバスに繋がった部品だけということになります。CPUバスは言うまでもなくCPUへの供給ですから、検証する必要はないでしょう。ただ単にベースクロックを上げればCPUのクロックも上がるという当たり前の話しです。ここではベースクロックはCPU以外にどのような部品に性能向上をもたらすかと言う検証ですから、前の2つを見ていきましょう。
PCIバスは規格上は33MHzとされています。マザーボード上でPLLから独立に33MHzが供給される場合もありますが、普通はベースクロックを分周(周波数を分けること)することによって作ります。現在は通常ベースクロックの3分の1(3分周)または半分(2分周)の周波数が供給されます。66MHzならば33MHz、75MHzなら37MHz、83MHzなら41.5MHz(いずれも2分周)になり、100MHzならば33MHz、112MHzなら37MHz、133MHzなら44MHz(いずれも3分周)といったたぐいです。従って41.5MHzなどは規格を大幅に上回るのでここに問題が発生します。どのように問題なのか、実際40MHz以上で駆動した場合本当に速くなるのかなどを接続機器毎にみていきましょう。
まずビデオカードですが、これは独自のクロックをもっており、バスの速度が上がっても殆ど効果はありません。むしろ独自クロックがPCIからは33MHzでデータが来るという前提で設計されていますから、データのやり取りに不整合が起こり問題が発生する訳です。しかしこのビデオカードのクロックもアップするということも不可能ではありません。Matroxのビデオカードなどはソフトでもできます。しかしこれによってPCIバスクロックアップによって起きた不具合を解消できるかはわかりません。しかし性能が向上することは確認されています。もっとも性能向上に関してはPCIバスクロックアップとは関係ありません。バスクロックが通常のままでもカードのクロックを上げれば性能は向上します。まあ不具合の解消と性能アップを同時は図れれば言うことがないのですが、このような実験は私はまだ見たことがありません。
次にSCSIカードですが、これも独自のクロックを持っています。ですからバスクロックアップの効果は全くありません。ビデオカード同様に不具合を起こす可能性だけを増すことになります。しかしこれもビデオカード同様カード側のクロックをアップできます。これを合わせて行えば、一応転送速度の向上は図れますし、PCIバスクロックアップによる不整合の解消にも役立つことは確認されています。AdaptecのAHA-2940などは42MHzのオシレータが積まれているようですが、これを60MHzのものに交換すると41.5MHzのバスクロックとなかなか相性がいいようです。もっともSCSIに接続されるHDDなどのストレージデバイスはそれ自体の速度というものが非常に重要です。回転数やシークタイムやMedia Tranfer Rateなどドライブの持つ性能まで、上記の改造で向上する訳ではありません。たとえ改造をしても結局全体としては大した向上には繋がりません。
LANカードなどその他の機器も基本的には独自のクロックで動いているので、効果のないものばかりです。Soundカードなどはよくわかりませんが、クロックアップで音質がよくなるなどという話は聞いたことがありません。
最後にIDE関連ですが、これは独自クロックというものはないのでバスクロック上昇の影響を直接受けます。ちょうどSCSIのカードのクロックも上げたようなものです。しかしSCSIの場合と同様、ドライブの性能まで向上されることができる訳ではありませんから、結局大した効果ありません。
こうしてみるとPCIバスクロックの上昇は、「百害あって一利なし」とは言わないまでも、利点よりも害の方が大きいので、できれば上げない方がいいというのが結論になります。問題点に関しては後ほどもう少し述べますが、効果という点では殆どないということはご理解頂けたと思います。
さてメモリバスはどうでしょうか。まずメインメモリですが、FPMやEDOなどは66MHzでも速すぎてウェイトを入れている始末です。これが長らくベースクロック66MHzを安泰にさせてきた主な理由であると言われています。ですからメモリバスクロックを上げても余計にウェイトを増やさねばならないだけで全く効果はありません。
しかしSDRAMは違います。SDRAMの登場でついにメインメモリも66MHzに同期できる、つまりウェイトなしで追従できるようになったのです。ベース100MHzなどという構想が浮上してきたのもひとえにSDRAMの登場のおかげです。最もSDRAMも登場当初は66MHzがやっとでしたが、100MHzマザーの登場と時期同じくして、バンバン安価な100MHz対応品が登場しました。現在では100MHz対応品でないものを探すほうが大変なくらいです。しかし実はメインメモリの高速化はあまり意味がありません。それは次ぎに述べる2次キャッシュがあるからです。
現在CPUは80%から90%は2次キャッシュとやり取りしていると言われています(この比率をキャッシュのヒット率といいます)。メインメモリより高速な2次キャッシュへのヒット率の向上はシステム全体としては当然大きなメリットです。しかしメインメモリにとってはその比重を低下させる要因であります。このようなものを高速化しても全体のパフォーマンスにとっての影響はとても低いを言わざるを得ません。その全く裏返しのことが2次キャッシュには言える訳です。
ヒット率が80%を超えている2次キャッシュの性能向上は極めて重要です。これがベースクロックの上昇にリニアに着いてくるのなら、これだけでもベースクロックを上げる意味があると私は思います。反面結局ベースクロックアップの効果は2次キャッシュだけとも言えますが、たとえそれだけでも十分はパフォーマンスの向上を果たせるほど2次キャッシュは重要な部品であることは、いろいろな実験が証明しています。
2次キャッシュは今CPU内蔵のものと、外部チップを利用している2種類があります。外部チップのものは更にCPUクロックと同期するものと、外部クロックのみに同期するものがあります。前者がPentium-II、Pentium-IIIで、後者がSocket7のオンボード2次キャッシュです。いずれもパイプラインバーストSRAMと呼ばれるものが使われており、DRAMを利用しているメインメモリより高速ですが、CPUが非常に早いだけにCPUクロックに同期するタイプのものの方が遥かに速いです。たとえばPentium-III 550MHzに使われているチップは、CPUクロックに同期するものですが、275MHzでアクセスされており、100MHzのSocket7の2次キャッシュと比べて倍以上の速度で動いている訳です。
CPU内蔵のものも基本的にはパイプラインバーストSRAMですが、CPUの同一のダイ上に集積されているので、CPUと同じ周波数で動作し、非常に高速です。CeleronとK6-III、また一部のモバイルPentium-IIがCPU内蔵2次キャッシュを利用しています。
上記CPU内蔵のものは勿論、外部チップでもCPUクロックに同期するタイプの2次キャッシュの場合、ベースクロックアップは倍率アップに対するアドバンテージはありません。従ってこれらのCPUの場合、倍率アップが可能なら問題の少ないこちらを選択した方がいいのですが、残念ながら現在のP6勢は倍率アップが不可能です。その場合はベースクロックを上げるしか方法がありません。
結論を申しますと、ベースクロックのアップのCPU以外の効果は2次キャッシュの向上だけであるが、Socket7(K6-IIIを除く)の場合それでも十分に意味があり、CPUのアップしか望めない倍率アップよりも優先して行いたい。またP6勢の場合でも、倍率アップがだめなので選択せざるを得ないということです。
やるなら問題点は解消なしければなりません。ではもう一度問題点を考えてみましょう。まずメインメモリはウェイトを増やすと効果はなくなりますが、少なくともそれだけで不具合の解消はできます。現在多くのM/Bがこうしたメモリアクセスの調整ができるようになっています。そもそも大した効果がないのですから、不具合が起こるようなら迷わずウェイトを増して解消しましょう。
具体的にはSDRAMの場合、BIOSで、「CASレイテンシ」や「RAS TO CAS Delay」「RAS PreCharge Time」などの値を増やせばいいと思います。問題はPCIバスをどうするかです。
ベースクロックが66MHzの時代、ベースクロックによるオーバークロックとは、たいてい75MHzにするか83MHzにすることでした。しかし先ほど述べたようにベースを75MHzにした場合、PCIバスクロックが37MHzになり、83MHzの場合、41MHzにも上がってしまいます。PCIバスクロックがここまで上がるといろいろと問題が出てくることは前述しました。
するとベースクロック100MHzになるとPCIが50MHzにもなるのではという心配も多くの人がしたはずですが、幸いこの場合3分周して、ちょうど33MHzの規格通りになっています。従って同じオーバークロックでも、半端に66から75や83に上げるよりは、100MHzにしてしまう方が、少なくともPCIバスの問題からは解放されることになります。つまり33MHzの整数倍のベースクロックの場合は基本的にPCIのオーバークロックの問題はないことになります。
しかし66MHzから100MHzにする場合、50%ものオーバークロックになり、PCIは大丈夫でも、CPU本体がオーバークロックついていかない場合が、普通でしょう。ところが前のページで述べたCeleron 300Aの場合は、たいていのものがこの50%のオーバークロックについてこれたので、PCIの問題に捕らわれずにオーバークロックできました。このあたりも、Celeronが大ブレークした大きな理由の一つであります。
しかしCeleronの場合は、元のベースクロックが66MHzと低いので、100MHzにするなど標準規格を逸脱せずにオーバークロックが可能ですが、Pentium-IIIなど元々ベースが100MHzの場合は、次ぎの33MHzの整数倍ということは133MHzになり、標準規格を大きく超えることになります。しかたなく、PCIのオーバークロックを覚悟で112MHz(PCI37MHz)や124MHz(PCI41MHz)に設定する他ありませんでした。幸い最近は133MHzを正式にサポートしたメモリも登場したので、何とかPentium-IIIでも極端なマニアックなことをしなくてもオーバークロックが可能になります。ただしたとえベース133MHzという設定をサポートしたマザーボードでも古いものは、PCIの4分周まではサポートしておらず、133MHzでは3分周のままPCI 44MHzになってしまうものもあるので、ちゃんと4分周をサポートしているか確認する必要があります。
また最近は124MHzでも3分周(PCI 41MHz)と4分周(PCI 31MHz)をサポートしたマザーボードもあります。PCIは多少低くてもパフォーマンスに及ぼす影響は殆どないので、PCIオーバーのトラブルによりベースクロックアップを断念するよりは、多少のPCIのパフォーマンスを犠牲にして、その分メモリやCPUの速くなるオーバークロックを選んだ方が遥かにトータルパフォーマンス的には有利です。このようにいろいろな周波数で複数の分周がサポートされれば、選択の幅が増え、よりオーバークロックの成功率が高まります。従ってマザーボードを選択するにあたり、様々なベースクロックをサポートしていることは元より、分周に関してもサポート幅の広いものを選択することが、後述するように今後倍率が変更できないCPUが増えてくると予想されるので、オーバークロックの成否にとっては、極めて重要な要素になってくると思います。
倍率もマザーボードのジャンパなどで設定するので、マザーボードによってサポートしている倍率が違います。サポートしていない倍率はできないことになります。これの改造方法、及びそもそも改造が可能なのかも知りません。
また倍率の場合はマザーボードで設定できてもCPUが受け付けないという問題があります。そもそもマザーボードで発生させたベースクロックを実際に倍化するのはCPU自身が行います。マザーボード側からはその周波数を作って与えるのでなく、ただジャンパの設定にしたがってCPUに倍率を知らせるだけです。この時、CPU側である一定の倍率以上は受け付けないという状態があります。
原理はいたって簡単です。マザーボードがCPUに倍率情報を知らせる方法は、CPU側には倍率情報を受けるピンがあり、マザーボードはそのピンにジャンパ設定などに従った電流を流すという方法で行います。今そのピンが2つあったとしましょう。
第1ピン | 第2ピン | 倍率 |
0 | 0 | 1.5倍 |
0 | 1 | 2.0倍 |
1 | 0 | 2.5倍 |
1 | 1 | 3.0倍 |
ですからいくらマザーボード側から第1ピンに情報を流しても、CPU側では第2ピンでしか判断していないので、2.5倍などにすることができないのです。たとえば2.5倍に設定したつもりが、1.5倍になってしまう訳です。中には全く訳の分からん倍率になってしまうものもあるようですが。これをよくリミッターがかかっているなんていいますね。回避する方法はわかりません。できたとしてもチップ内のことなので、相当困難であると思います。
倍率の設定も前述のようにマザーボードのジャンパやディップスイッチで設定するので、実際の方法はマザーボードのマニュアルをみるとか、実際のマザーボードを覗いて頂くしかありません。
更に先ほどもベースクロックのところでも述べたように現在のP6勢のCPUは完全に倍率固定です。上記のようにどのピンは無視するなどというレベルではなく、全くマザーボードのからの設定など無視して、一律に倍率を設定してしまいます。このあたりを改造する試みもあるようですが、相当のパワーユーザでない限り不可能だと思います。私も挑戦しようと思ったことすらありません。
今後はこの倍率固定が主流になる恐れがあります。まあ仕方のないことです。従ってこれからはCPUのオーバークロックは、ベースクロックの変更しかないようになってくるでしょう。
さて、これまで解説してきたのは、周波数を上げるための努力でした。しかしこれはオーバークロックにとって入り口に入った程度です。さんざん指摘してきたように、この後本当にその周波数でCPUが動くのかという重要な命題が待っています。
もちろん多少のオーバーならその成功率が高いのがCPUの特徴であるとも述べてきました。多くの人が行っているオーバークロックは精々10%から15%程度だと思います。この程度ならかなりのCPUが追従できるようです。そしてその訳を説明してきたつもりです。しかし人間には欲があり、もっと上げてみたいと当然思うでしょう。私もそうです。その場合の問題点とは何なのでしょうか。
これに付いてはさらに紙面を改めましょう。こちらへどうそ。